package com.candy.reflection;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

/**
 * @author donglin
 * @Title:
 * @类名: Test01
 * @date 2020/6/5
 */

public class Test01 {
    public static void main(String[] args) {
    test02();
    }
/**
 * 方法描述：Constructor类的使用
 *
*/
    public static void test02() {
        try {
            //获取Class对象
            Class type1=Class.forName("com.candy.reflection.Student");
            //通过指定参数类型，创建指定的构造函数
            Constructor cu=type1.getDeclaredConstructor(int.class,String.class,boolean.class);
            //使用构造函数对象实例化Student对象
            Student st= (Student) cu.newInstance(2020016,"tom",true);
            //调用方法.
            st.sayHi();
            System.out.println(st);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //Method类操作：返回值
    public static void test01() {
        Class type1=Student.class;
        try {
            //获取指定名字和参数的方法
            Method md=type1.getDeclaredMethod("sayNum");
            //实例化对象
            Student st= (Student) type1.newInstance();
            //执行方法，返回值是该方法的返回值
            Object ob=md.invoke(st);
            System.out.println(ob);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
